library("tidyverse")
Registered S3 methods overwritten by 'dbplyr':
method from
print.tbl_lazy
print.tbl_sql
── Attaching packages ─────────────────────────────────────────────────────── tidyverse 1.3.1 ──
✓ ggplot2 3.3.3 ✓ purrr 0.3.4
✓ tibble 3.1.2 ✓ dplyr 1.0.6
✓ tidyr 1.1.3 ✓ stringr 1.4.0
✓ readr 1.4.0 ✓ forcats 0.5.1
── Conflicts ────────────────────────────────────────────────────────── tidyverse_conflicts() ──
x dplyr::filter() masks stats::filter()
x dplyr::lag() masks stats::lag()
library("magrittr") # For T-pipe
Attaching package: ‘magrittr’
The following object is masked from ‘package:purrr’:
set_names
The following object is masked from ‘package:tidyr’:
extract
library("sf")
Linking to GEOS 3.9.1, GDAL 3.3.0, PROJ 8.0.1
library("stratigraphr")
library("rcarbon")
Registered S3 method overwritten by 'spatstat.geom':
method from
print.boxx cli
Attaching package: ‘rcarbon’
The following object is masked from ‘package:dplyr’:
combine
library("patchwork")
library("ggpubr")
Registered S3 method overwritten by 'data.table':
method from
print.data.table
Research compendium containing data and source code for a meta-analysis of chronology and regional settlement in the Epipalaeolithic-Neolithic of the Zagros region (20000-6000 BP).
sw_asia <- st_read("data/regions/swasia.geojson")
Reading layer `swasia' from data source
`/home/joeroe/g/work/lab/ZagrosC14/analysis/data/regions/swasia.geojson' using driver `GeoJSON'
Simple feature collection with 1 feature and 0 fields
Geometry type: POLYGON
Dimension: XY
Bounding box: xmin: 29.99805 ymin: 24.99899 xmax: 49.99998 ymax: 40.00001
Geodetic CRS: WGS 84
rbind(
st_read("data/regions/cyprus.geojson"),
st_read("data/regions/canatolia.geojson"),
st_read("data/regions/slevant.geojson"),
st_read("data/regions/east_fcrescent.geojson"),
st_read("data/regions/nlevant_seanatolia.geojson"),
st_read("data/regions/desert.geojson")
) %>%
add_column(region = c("cyprus", "canatolia", "slevant", "east_fcrescent",
"nlevant_seanatolia", "desert"), .before = 1) ->
regions
Reading layer `cyprus' from data source
`/home/joeroe/g/work/lab/ZagrosC14/analysis/data/regions/cyprus.geojson' using driver `GeoJSON'
Simple feature collection with 1 feature and 0 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: 32.27174 ymin: 34.56855 xmax: 34.59254 ymax: 35.69196
Geodetic CRS: WGS 84
Reading layer `canatolia' from data source
`/home/joeroe/g/work/lab/ZagrosC14/analysis/data/regions/canatolia.geojson'
using driver `GeoJSON'
Simple feature collection with 1 feature and 0 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: 29.99805 ymin: 36.02717 xmax: 34.998 ymax: 39.99875
Geodetic CRS: WGS 84
Reading layer `slevant' from data source
`/home/joeroe/g/work/lab/ZagrosC14/analysis/data/regions/slevant.geojson' using driver `GeoJSON'
Simple feature collection with 1 feature and 0 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: 34.05732 ymin: 30.58578 xmax: 37.23611 ymax: 33.99886
Geodetic CRS: WGS 84
Reading layer `east_fcrescent' from data source
`/home/joeroe/g/work/lab/ZagrosC14/analysis/data/regions/east_fcrescent.geojson'
using driver `GeoJSON'
Simple feature collection with 1 feature and 0 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: 39.99795 ymin: 29.99889 xmax: 49.99983 ymax: 39.99875
Geodetic CRS: WGS 84
Reading layer `nlevant_seanatolia' from data source
`/home/joeroe/g/work/lab/ZagrosC14/analysis/data/regions/nlevant_seanatolia.geojson'
using driver `GeoJSON'
Simple feature collection with 1 feature and 0 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: 34.99884 ymin: 33.99886 xmax: 39.99795 ymax: 40.00001
Geodetic CRS: WGS 84
Reading layer `desert' from data source
`/home/joeroe/g/work/lab/ZagrosC14/analysis/data/regions/desert.geojson' using driver `GeoJSON'
Simple feature collection with 1 feature and 0 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: 32.29663 ymin: 24.99899 xmax: 49.99786 ymax: 35.625
Geodetic CRS: WGS 84
sites <- read_csv("./data/zagros_site.csv")
── Column specification ────────────────────────────────────────────────────────────────────────
cols(
.default = col_character(),
site_id = col_double(),
lchto_id = col_double(),
latitude = col_double(),
coord_precision = col_double(),
area = col_double(),
finds_n = col_double()
)
ℹ Use `spec()` for the full column specifications.
Import and clean data. Exclude obvious outliers and dates with unknown errors. Assign dummy values to dates without a Lab ID.
read_csv("./data/zagros_c14.csv") %T>%
{message("Imported ", nrow(.), " dates.")} %>%
filter(!outlier) %>%
drop_na(c14_error) %>%
mutate(lab_id = if_else(is.na(lab_id), paste0("Unknown-", seq_along(lab_id)), lab_id)) %T>%
{message(nrow(.), " dates remaining after cleaning.")} ->
dates
── Column specification ────────────────────────────────────────────────────────────────────────
cols(
.default = col_double(),
site_name = col_character(),
site_phase = col_character(),
context = col_character(),
lab_id = col_character(),
material = col_character(),
taxon = col_character(),
d13C = col_character(),
source = col_character(),
additional_references = col_character(),
outlier = col_logical(),
remarks = col_character()
)
ℹ Use `spec()` for the full column specifications.
Imported 1112 dates.
1095 dates remaining after cleaning.
dates <- right_join(sites, dates, by = "site_id", na_matches = "never")
And the NERD database for cross-regional comparisons:
nerd <- c14bazAAR::get_c14data("nerd")
Trying to download all dates from the requested databases...
|
| | 0%
|
|++++++++++++++++++++++++++++++++++++++++++++++++++| 99%
|
|++++++++++++++++++++++++++++++++++++++++++++++++++| 100%
We calibrate them with IntCal20 and rcarbon. Normalising the dates at this point is undesirable because it exaggerates calibration curve artifacts (Roberts et al. 2017).
Warning: Problem with `mutate()` column `cal`.
ℹ `cal = c14_calibrate(c14_age, c14_error, normalised = FALSE)`.
ℹ stratigraphr::c14_calibrate() is deprecated. Please use c14::c14_calibrate() instead.
[1] "Calibrating radiocarbon ages..."
|
| | 0%
|
| | 1%
|
|= | 1%
|
|= | 2%
|
|== | 2%
|
|== | 3%
|
|=== | 3%
|
|=== | 4%
|
|==== | 4%
|
|==== | 5%
|
|===== | 5%
|
|===== | 6%
|
|====== | 6%
|
|====== | 7%
|
|======= | 8%
|
|======= | 9%
|
|======== | 9%
|
|======== | 10%
|
|========= | 10%
|
|========= | 11%
|
|========== | 11%
|
|========== | 12%
|
|=========== | 12%
|
|=========== | 13%
|
|============ | 13%
|
|============ | 14%
|
|============ | 15%
|
|============= | 15%
|
|============= | 16%
|
|============== | 16%
|
|============== | 17%
|
|=============== | 17%
|
|=============== | 18%
|
|================ | 18%
|
|================ | 19%
|
|================= | 19%
|
|================= | 20%
|
|================== | 20%
|
|================== | 21%
|
|=================== | 22%
|
|=================== | 23%
|
|==================== | 23%
|
|==================== | 24%
|
|===================== | 24%
|
|===================== | 25%
|
|====================== | 25%
|
|====================== | 26%
|
|======================= | 26%
|
|======================= | 27%
|
|======================== | 27%
|
|======================== | 28%
|
|========================= | 28%
|
|========================= | 29%
|
|========================= | 30%
|
|========================== | 30%
|
|========================== | 31%
|
|=========================== | 31%
|
|=========================== | 32%
|
|============================ | 32%
|
|============================ | 33%
|
|============================= | 33%
|
|============================= | 34%
|
|============================== | 34%
|
|============================== | 35%
|
|=============================== | 36%
|
|=============================== | 37%
|
|================================ | 37%
|
|================================ | 38%
|
|================================= | 38%
|
|================================= | 39%
|
|================================== | 39%
|
|================================== | 40%
|
|=================================== | 40%
|
|=================================== | 41%
|
|==================================== | 41%
|
|==================================== | 42%
|
|===================================== | 42%
|
|===================================== | 43%
|
|===================================== | 44%
|
|====================================== | 44%
|
|====================================== | 45%
|
|======================================= | 45%
|
|======================================= | 46%
|
|======================================== | 46%
|
|======================================== | 47%
|
|========================================= | 47%
|
|========================================= | 48%
|
|========================================== | 48%
|
|========================================== | 49%
|
|=========================================== | 49%
|
|=========================================== | 50%
|
|=========================================== | 51%
|
|============================================ | 51%
|
|============================================ | 52%
|
|============================================= | 52%
|
|============================================= | 53%
|
|============================================== | 53%
|
|============================================== | 54%
|
|=============================================== | 54%
|
|=============================================== | 55%
|
|================================================ | 55%
|
|================================================ | 56%
|
|================================================= | 56%
|
|================================================= | 57%
|
|================================================= | 58%
|
|================================================== | 58%
|
|================================================== | 59%
|
|=================================================== | 59%
|
|=================================================== | 60%
|
|==================================================== | 60%
|
|==================================================== | 61%
|
|===================================================== | 61%
|
|===================================================== | 62%
|
|====================================================== | 62%
|
|====================================================== | 63%
|
|======================================================= | 63%
|
|======================================================= | 64%
|
|======================================================== | 65%
|
|======================================================== | 66%
|
|========================================================= | 66%
|
|========================================================= | 67%
|
|========================================================== | 67%
|
|========================================================== | 68%
|
|=========================================================== | 68%
|
|=========================================================== | 69%
|
|============================================================ | 69%
|
|============================================================ | 70%
|
|============================================================= | 70%
|
|============================================================= | 71%
|
|============================================================= | 72%
|
|============================================================== | 72%
|
|============================================================== | 73%
|
|=============================================================== | 73%
|
|=============================================================== | 74%
|
|================================================================ | 74%
|
|================================================================ | 75%
|
|================================================================= | 75%
|
|================================================================= | 76%
|
|================================================================== | 76%
|
|================================================================== | 77%
|
|=================================================================== | 77%
|
|=================================================================== | 78%
|
|==================================================================== | 79%
|
|==================================================================== | 80%
|
|===================================================================== | 80%
|
|===================================================================== | 81%
|
|====================================================================== | 81%
|
|====================================================================== | 82%
|
|======================================================================= | 82%
|
|======================================================================= | 83%
|
|======================================================================== | 83%
|
|======================================================================== | 84%
|
|========================================================================= | 84%
|
|========================================================================= | 85%
|
|========================================================================== | 85%
|
|========================================================================== | 86%
|
|========================================================================== | 87%
|
|=========================================================================== | 87%
|
|=========================================================================== | 88%
|
|============================================================================ | 88%
|
|============================================================================ | 89%
|
|============================================================================= | 89%
|
|============================================================================= | 90%
|
|============================================================================== | 90%
|
|============================================================================== | 91%
|
|=============================================================================== | 91%
|
|=============================================================================== | 92%
|
|================================================================================ | 93%
|
|================================================================================ | 94%
|
|================================================================================= | 94%
|
|================================================================================= | 95%
|
|================================================================================== | 95%
|
|================================================================================== | 96%
|
|=================================================================================== | 96%
|
|=================================================================================== | 97%
|
|==================================================================================== | 97%
|
|==================================================================================== | 98%
|
|===================================================================================== | 98%
|
|===================================================================================== | 99%
|
|======================================================================================| 99%
|
|======================================================================================| 100%
[1] "Done."
Warning message:
Problem with `mutate()` column `cal`.
ℹ `cal = c14_calibrate(c14_age, c14_error, normalised = FALSE)`.
ℹ stratigraphr::as_cal() is deprecated. Please use c14::as_cal() instead.
It’s often said that the E. Fertile Crescent has “lagged behind” other parts of Southwest Asia in terms of primary field research. We can get a rough measure of this by looking at the earliest publication date associated with each site and radiocarbon date in our database.
# TODO: Deal with `Inf` warning
earliest <- function(x) {
str_extract_all(x, r"(\d\d\d\d)", simplify = TRUE) |>
as.numeric() |>
min(na.rm = FALSE)
}
sites <- mutate(sites, first_pub = map_dbl(references, earliest))
dates <- mutate(dates, first_pub = map_dbl(paste(source, additional_references),
earliest))
sites |>
drop_na(first_pub) |>
count(first_pub) |>
filter(is.finite(first_pub)) |>
mutate(ncum = cumsum(n)) |>
ggplot(aes(first_pub, ncum)) +
geom_area() +
scale_x_continuous(breaks = seq(1950, 2020, by = 10), limits = c(1950, 2021)) +
labs(
x = NULL,
y = "Sites"
) ->
p_pub_year1
dates |>
drop_na(first_pub) |>
count(first_pub) |>
filter(is.finite(first_pub)) |>
mutate(ncum = cumsum(n)) |>
ggplot(aes(first_pub, ncum)) +
geom_area() +
scale_x_continuous(breaks = seq(1950, 2020, by = 10), limits = c(1950, 2021)) +
labs(x = NULL,
y = "Dates") ->
p_pub_year2
(p_pub_year1 / p_pub_year2) +
plot_annotation(
title = "Cumulative number of published sites and radiocarbon dates",
subtitle = "Eastern Fertile Crescent"
)
Warning: Removed 1 rows containing missing values (position_stack).
# ggsave("figures/pub_year.png", width = 254, height = 143, units = "mm")
Interestingly I’m not sure that the quantitative data bears this out: there are some big “jumps” in the publication of sites, corresponding to major surveys, but overall there looks to have been a steady stream of new data coming in since at least the late 1960s.
Using Palmisiano et al.’s NERD database, we can also compare this to other regions (this time including dates up to 2000 BP):
nerd <- mutate(nerd, first_pub = map_dbl(shortref, earliest))
nerd |>
st_as_sf(coords = c("lon", "lat"), crs = 4326) |>
st_join(regions) |>
drop_na(region) |>
mutate(region = recode(region,
"canatolia" = "Central Anatolia",
"cyprus" = "Cyprus",
"desert" = "Arid interior",
"east_fcrescent" = "Eastern Fertile Crescent",
"nlevant_seanatolia" = "Northern Levant/Southeast Anatolia",
"slevant" = "Southern Levant")) |>
drop_na(first_pub) |>
count(region, first_pub) |>
filter(is.finite(first_pub)) |>
group_by(region) |>
mutate(ncum = cumsum(n)) |>
ggplot(aes(first_pub, ncum)) +
facet_wrap(vars(region)) +
geom_area() +
scale_x_continuous(breaks = seq(1960, 2020, by = 10), limits = c(1960, 2021)) +
labs(title = "Cumulative number of radiocarbon dates by region",
x = NULL,
y = "Radiocarbon dates",
caption = "Data: Near East Radiocarbon Dates <https://github.com/apalmisano82/NERD>")
Warning: Removed 38 rows containing missing values (position_stack).
# ggsave("figures/pub_year_byregion.png", width = 254, height = 143, units = "mm")
Again, the quantitative data doesn’t match the “lagging behind” perception – at least in terms of radiocarbon dates. The growth rate and total sample from the E. Fertile Crescent are roughly the same as for comparable regions; the real exception is the explosion of high resolution site-dating in the Southern levant in the last ten years.
Calibrating all dates for which relative chronological information is available:
dates